<!DOCTYPE html>
<html>
  <head>
     
    <meta charset="UTF-8">
    <title>Apex对接钉钉免登 - 我的元宇宙</title>
    <link rel="shortcut icon" href="/static/img/icon.png">
    <link rel="icon" href="/static/img/icon.png" sizes="192x192"/>
    
<link rel="stylesheet" href="/static/kico.css">
<link rel="stylesheet" href="/static/hingle.css">

    
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/FortAwesome/Font-Awesome/css/font-awesome.min.css">

    <meta name="viewport" content="width=device-width, maximum-scale=1, initial-scale=1"/>
    <meta property="og:site_name" content="我的元宇宙">
    <meta property="og:title" content="Apex对接钉钉免登"/>
    
 
<meta name="generator" content="Hexo 5.4.0"></head>

  <body>
    <header>
    <div class="head-title">
        <h4>我的元宇宙</h4>
    </div>
    <div class="head-action">
        <div class="toggle-btn"></div>
        <div class="light-btn"></div>
        <div class="search-btn"></div>
    </div>
    <form class="head-search" method="post">
        <input type="text" name="s" placeholder="搜索什么？">
    </form>
    <nav class="head-menu">
        <a href="/">首页</a>
        <div class="has-child">
            <a>分类</a>
            <div class="sub-menu">
                <a class="category-link" href="/categories/%E5%AD%A6%E4%B9%A0/">学习</a><a class="category-link" href="/categories/%E6%9D%82%E9%A1%B9/">杂项</a><a class="category-link" href="/categories/%E7%AC%94%E8%AE%B0/">笔记</a><a class="category-link" href="/categories/%E8%BD%AC%E8%BD%BD/">转载</a>
            </div>
        </div>
        
            <a href="/about">关于我</a>
        
    </nav>
</header>

    <main>
    <div class="wrap min">
        <section class="post-title">
            <h2>Apex对接钉钉免登</h2>
            <div class="post-meta">
                <time class="date">2021.11.05</time>
            
                <span class="category"><a class="category-link" href="/categories/%E7%AC%94%E8%AE%B0/">笔记</a>，<a class="category-link" href="/categories/%E7%AC%94%E8%AE%B0/Oracle/">Oracle</a>，<a class="category-link" href="/categories/%E7%AC%94%E8%AE%B0/Oracle/Apex/">Apex</a></span>
            
            </div>
        </section>
        <article class="post-content">
        
            <h1 id="Apex对接钉钉免登"><a href="#Apex对接钉钉免登" class="headerlink" title="Apex对接钉钉免登"></a>Apex对接钉钉免登</h1><h2 id="前提"><a href="#前提" class="headerlink" title="前提"></a>前提</h2><ol>
<li><p>打通数据库服务器访问钉钉的网络</p>
</li>
<li><p>Oracle ACL是否放行</p>
</li>
<li><p>Wallet 是否添加钉钉证书</p>
</li>
<li><p>Apex INTERNAL 工作区是否添加 Wallet 路径</p>
</li>
<li><p>测试请求</p>
 <figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">select</span>   APEX_WEB_SERVICE.make_rest_request(</span><br><span class="line">                p_url <span class="operator">=</span><span class="operator">&gt;</span> <span class="string">&#x27;https://developers.dingtalk.com/&#x27;</span>,</span><br><span class="line">                p_http_method <span class="operator">=</span><span class="operator">&gt;</span> <span class="string">&#x27;GET&#x27;</span>)</span><br><span class="line"><span class="keyword">from</span> dual;</span><br></pre></td></tr></table></figure></li>
<li><p>钉钉关键信息APPKEY,APPSECRET,AGENT_ID,corpId (向本公司钉钉管理员建H5应用索要)</p>
</li>
<li><p>钉钉JS dingtalk.open.js</p>
</li>
</ol>
<h2 id="步骤"><a href="#步骤" class="headerlink" title="步骤"></a>步骤</h2><ol start="0">
<li><p>新建应用</p>
</li>
<li><p>将 dingtalk.open.js 导入应用的静态文件中得到 #WORKSPACE_IMAGES#dingtalk.open.js</p>
</li>
<li><p>新建全局页项 <code>DINGDING_CODE</code>,<code>DINGDING_ACCESS_TOKEN</code> 权限都是设置为 <code>无限制</code></p>
</li>
<li><p>在<code>共享组件</code>&gt;&gt;<code>应用程序处理</code>中创建一个全局的Ajax回调 名字<code>GET_DINGDING_PD_ACCESS_TOKEN</code> 权限设置为<code>不需要授权</code></p>
 <figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">Declare</span></span><br><span class="line">    l_code      varchar2(<span class="number">100</span>) :<span class="operator">=</span> apex_application.g_x01; </span><br><span class="line">    l_appkey    varchar2(<span class="number">30</span>)  :<span class="operator">=</span> <span class="string">&#x27;din0&#x27;</span>;  <span class="comment">-- 前提6中的 APPKEY</span></span><br><span class="line">    l_appsecret varchar2(<span class="number">70</span>)  :<span class="operator">=</span> <span class="string">&#x27;O5Gg5P&#x27;</span>; <span class="comment">-- 前提6中的 APPSECRET</span></span><br><span class="line">    l_email     varchar2(<span class="number">100</span>) :<span class="operator">=</span> <span class="keyword">null</span> ;</span><br><span class="line">    l_clob      <span class="type">clob</span>;</span><br><span class="line"><span class="keyword">Begin</span></span><br><span class="line">    if l_code <span class="keyword">is</span> <span class="keyword">not</span> <span class="keyword">null</span> <span class="keyword">then</span></span><br><span class="line">        :DINGDING_CODE :<span class="operator">=</span> l_code;  <span class="comment">-- </span></span><br><span class="line">        apex_web_service.g_request_headers(<span class="number">1</span>).name :<span class="operator">=</span> <span class="string">&#x27;Content-Type&#x27;</span>;</span><br><span class="line">        apex_web_service.g_request_headers(<span class="number">1</span>).<span class="keyword">VALUE</span> :<span class="operator">=</span> <span class="string">&#x27;application/json&#x27;</span>;</span><br><span class="line">        l_clob :<span class="operator">=</span> APEX_WEB_SERVICE.make_rest_request(</span><br><span class="line">                p_url <span class="operator">=</span><span class="operator">&gt;</span> <span class="string">&#x27;https://oapi.dingtalk.com/gettoken&#x27;</span>,</span><br><span class="line">                p_http_method <span class="operator">=</span><span class="operator">&gt;</span> <span class="string">&#x27;GET&#x27;</span>,</span><br><span class="line">                p_parm_name <span class="operator">=</span><span class="operator">&gt;</span>apex_util.string_to_table(<span class="string">&#x27;appkey:appsecret&#x27;</span>),</span><br><span class="line">                p_parm_value <span class="operator">=</span><span class="operator">&gt;</span>apex_util.string_to_table(l_appkey <span class="operator">||</span> <span class="string">&#x27;;&#x27;</span> <span class="operator">||</span> l_appsecret, p_separator<span class="operator">=</span><span class="operator">&gt;</span><span class="string">&#x27;;&#x27;</span>)</span><br><span class="line">            );</span><br><span class="line">        apex_json.parse(l_clob);</span><br><span class="line">        if apex_json.does_exist(p_path <span class="operator">=</span><span class="operator">&gt;</span> <span class="string">&#x27;access_token&#x27;</span>) <span class="keyword">then</span></span><br><span class="line">            :DINGDING_ACCESS_TOKEN :<span class="operator">=</span> apex_json.get_varchar2(p_path <span class="operator">=</span><span class="operator">&gt;</span> <span class="string">&#x27;access_token&#x27;</span>);</span><br><span class="line">            apex_json.open_object();</span><br><span class="line">            apex_json.close_object();</span><br><span class="line">        <span class="keyword">end</span> if;</span><br><span class="line">        apex_json.open_object();</span><br><span class="line">        apex_json.close_object();</span><br><span class="line">    <span class="keyword">end</span> if;</span><br><span class="line"><span class="keyword">End</span>;</span><br></pre></td></tr></table></figure></li>
<li><p>新建钉钉登录中转页(page_id 9990)</p>
</li>
<li><p>将默认登录页9999中的页别名 <code>剪切</code> 到中转页</p>
</li>
<li><p>在中转页 JavaScript 区域<code>文件URL</code>填充 #WORKSPACE_IMAGES#dingtalk.open.js <code>函数和全局变量声明</code></p>
 <figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">if</span> (dd.env.platform === <span class="string">&quot;notInDingTalk&quot;</span>) &#123;</span><br><span class="line">alert(<span class="string">&#x27;抱歉请在钉钉登录&#x27;</span>);</span><br><span class="line">&#125; <span class="keyword">else</span> &#123;</span><br><span class="line">    dd.ready(<span class="function"><span class="keyword">function</span> (<span class="params"></span>) </span>&#123;</span><br><span class="line">        <span class="comment">// dd.ready参数为回调函数，在环境准备就绪时触发，jsapi的调用需要保证在该回调函数触发后调用，否则无效。</span></span><br><span class="line">        dd.runtime.permission.requestAuthCode(&#123;</span><br><span class="line">          </span><br><span class="line">            <span class="attr">corpId</span>:<span class="string">&quot;ding46&quot;</span>, <span class="comment">// 前提 6中的corpId</span></span><br><span class="line">            <span class="attr">onSuccess</span>: <span class="function"><span class="keyword">function</span> (<span class="params">result</span>) </span>&#123;</span><br><span class="line">                apex.server.process(</span><br><span class="line">                </span><br><span class="line">                     <span class="string">&quot;GET_DINGDING_PD_ACCESS_TOKEN&quot;</span>, <span class="comment">// 保持和3中的名字一致</span></span><br><span class="line">                    &#123; <span class="string">&#x27;x01&#x27;</span>: result.code &#125;,</span><br><span class="line">                    &#123;</span><br><span class="line">                        <span class="attr">success</span>: <span class="function"><span class="keyword">function</span> (<span class="params">data</span>) </span>&#123;</span><br><span class="line">                         <span class="comment">//   alert(data)</span></span><br><span class="line">                            <span class="built_in">window</span>.location =<span class="string">&#x27;f?p=&#x27;</span>+&amp;APP_ID.+<span class="string">&#x27;:1:&#x27;</span>+&amp;APP_SESSION.</span><br><span class="line">                        &#125;</span><br><span class="line">                    &#125;</span><br><span class="line">                );</span><br><span class="line">            &#125;,</span><br><span class="line">            <span class="attr">onFail</span>: <span class="function"><span class="keyword">function</span> (<span class="params">err</span>) </span>&#123;</span><br><span class="line">                alert(<span class="string">&#x27;抱歉钉钉登录失败&#x27;</span>);</span><br><span class="line">            &#125;</span><br><span class="line"></span><br><span class="line">        &#125;);</span><br><span class="line">    &#125;);</span><br><span class="line">&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure></li>
<li><p>自定义认证方案pl/sql 会话过程名无效 <code>TOKEN_INVALID_SESSION_DINGDING_1</code></p>
 <figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">PROCEDURE</span> TOKEN_INVALID_SESSION_DINGDING_1</span><br><span class="line">        <span class="keyword">IS</span></span><br><span class="line">        l_access_token varchar2(<span class="number">50</span>)  :<span class="operator">=</span> :DINGDING_ACCESS_TOKEN ;</span><br><span class="line">        l_userid       varchar2(<span class="number">50</span>)  :<span class="operator">=</span> <span class="keyword">null</span> ;</span><br><span class="line">        l_email        varchar2(<span class="number">100</span>) :<span class="operator">=</span> <span class="keyword">null</span> ;</span><br><span class="line">        l_clob         <span class="type">clob</span>;</span><br><span class="line">        </span><br><span class="line">        <span class="keyword">BEGIN</span></span><br><span class="line">            <span class="comment">-- get code</span></span><br><span class="line">            <span class="comment">-- 获取access_token</span></span><br><span class="line">            <span class="comment">-- 通过免登授权码和access_token获取用户的userid</span></span><br><span class="line">        </span><br><span class="line">            apex_debug.warn(<span class="string">&#x27;+++++++++++l_access_token+++++++++++&gt;&#x27;</span>);</span><br><span class="line">            apex_debug.warn(l_access_token);</span><br><span class="line">            apex_debug.warn(<span class="string">&#x27;&lt;+++++++++++&#x27;</span>);</span><br><span class="line">        </span><br><span class="line">            if l_access_token <span class="keyword">is</span> <span class="keyword">not</span> <span class="keyword">null</span> <span class="keyword">then</span></span><br><span class="line">                l_clob :<span class="operator">=</span> APEX_WEB_SERVICE.make_rest_request(</span><br><span class="line">                        p_url <span class="operator">=</span><span class="operator">&gt;</span> <span class="string">&#x27;https://oapi.dingtalk.com/user/getuserinfo&#x27;</span>,</span><br><span class="line">                        p_http_method <span class="operator">=</span><span class="operator">&gt;</span> <span class="string">&#x27;GET&#x27;</span>,</span><br><span class="line">                        p_parm_name <span class="operator">=</span><span class="operator">&gt;</span>apex_util.string_to_table(<span class="string">&#x27;access_token:code&#x27;</span>),</span><br><span class="line">                        p_parm_value <span class="operator">=</span><span class="operator">&gt;</span>apex_util.string_to_table(l_access_token <span class="operator">||</span> <span class="string">&#x27;;&#x27;</span> <span class="operator">||</span> :DINGDING_CODE, p_separator<span class="operator">=</span><span class="operator">&gt;</span><span class="string">&#x27;;&#x27;</span>)</span><br><span class="line">                    );</span><br><span class="line">                apex_debug.warn(<span class="string">&#x27;-------------&gt;&#x27;</span>);</span><br><span class="line">                apex_debug.warn(l_clob);</span><br><span class="line">                apex_debug.warn(<span class="string">&#x27;&lt;-------------&#x27;</span>);</span><br><span class="line">                apex_json.parse(l_clob);</span><br><span class="line">                apex_debug.warn(<span class="string">&#x27;+++++++++++l_code+++++++++++&gt;&#x27;</span>);</span><br><span class="line">                apex_debug.warn(l_clob);</span><br><span class="line">                apex_debug.warn(<span class="string">&#x27;&lt;+++++++++++&#x27;</span>);</span><br><span class="line">                if apex_json.does_exist(p_path <span class="operator">=</span><span class="operator">&gt;</span> <span class="string">&#x27;userid&#x27;</span>) <span class="keyword">then</span></span><br><span class="line">                    l_userid :<span class="operator">=</span> apex_json.get_varchar2(p_path <span class="operator">=</span><span class="operator">&gt;</span> <span class="string">&#x27;userid&#x27;</span>);</span><br><span class="line">                  <span class="comment">--  :CREATED_BY_NAME :=apex_json.get_varchar2(p_path =&gt; &#x27;name&#x27;); --取姓名</span></span><br><span class="line">                    <span class="comment">--  :DINGDING_USERID := l_userid;</span></span><br><span class="line">                    sys.dbms_output.put_line(<span class="string">&#x27;l_userid&#x27;</span> <span class="operator">||</span> <span class="string">&#x27; - &#x27;</span> <span class="operator">||</span> l_userid);</span><br><span class="line">                    APEX_DEBUG.WARN(<span class="string">&#x27;l_userid&#x27;</span> <span class="operator">||</span> <span class="string">&#x27; - &#x27;</span> <span class="operator">||</span> l_userid);</span><br><span class="line">                <span class="keyword">else</span></span><br><span class="line">                      apex_json.open_object();</span><br><span class="line">        </span><br><span class="line">            apex_json.write(<span class="string">&#x27;l_clob&#x27;</span>, l_clob);</span><br><span class="line">            apex_json.close_object();</span><br><span class="line">                <span class="keyword">end</span> if;</span><br><span class="line">            <span class="keyword">end</span> if;</span><br><span class="line">            <span class="comment">/*</span></span><br><span class="line"><span class="comment">                    -- 用户8位工号</span></span><br><span class="line"><span class="comment">                    if l_userid is not null then</span></span><br><span class="line"><span class="comment">                        l_clob := APEX_WEB_SERVICE.make_rest_request(</span></span><br><span class="line"><span class="comment">                                p_url =&gt; &#x27;https://oapi.dingtalk.com/user/get&#x27;,</span></span><br><span class="line"><span class="comment">                                p_http_method =&gt; &#x27;GET&#x27;,</span></span><br><span class="line"><span class="comment">                                p_parm_name =&gt;apex_util.string_to_table(&#x27;access_token:userid&#x27;),</span></span><br><span class="line"><span class="comment">                                p_parm_value =&gt;apex_util.string_to_table(l_access_token || &#x27;;&#x27; || l_userid, p_separator=&gt;&#x27;;&#x27;)</span></span><br><span class="line"><span class="comment">                            );</span></span><br><span class="line"><span class="comment">                        apex_json.parse(l_clob);</span></span><br><span class="line"><span class="comment">                        if apex_json.does_exist(p_path =&gt; &#x27;jobnumber&#x27;) then</span></span><br><span class="line"><span class="comment">                            l_email := apex_json.get_varchar2(p_path =&gt; &#x27;jobnumber&#x27;);</span></span><br><span class="line"><span class="comment">                            sys.dbms_output.put_line(&#x27;l_email&#x27; || &#x27; - &#x27; || l_clob);</span></span><br><span class="line"><span class="comment">                            APEX_DEBUG.WARN(&#x27;l_email&#x27; || &#x27; - &#x27; || l_clob);</span></span><br><span class="line"><span class="comment">                        end if;</span></span><br><span class="line"><span class="comment">                    end if;</span></span><br><span class="line"><span class="comment">            </span></span><br><span class="line"><span class="comment">            */</span></span><br><span class="line">        </span><br><span class="line">            if l_userid <span class="keyword">is</span> <span class="keyword">not</span> <span class="keyword">null</span> <span class="keyword">then</span></span><br><span class="line">                <span class="comment">-- login</span></span><br><span class="line">                if l_userid<span class="operator">=</span><span class="string">&#x27;03&#x27;</span> <span class="keyword">then</span> l_userid:<span class="operator">=</span><span class="string">&#x27;02&#x27;</span>; <span class="keyword">end</span> if; <span class="comment">-- 模拟账号</span></span><br><span class="line">                apex_authentication.post_login(l_userid,</span><br><span class="line">                                               <span class="keyword">null</span>, <span class="literal">true</span>);</span><br><span class="line">            <span class="keyword">end</span> if;</span><br><span class="line">        <span class="keyword">End</span>;</span><br></pre></td></tr></table></figure>
</li>
</ol>

        </article>
        <section class="post-near">
            <ul>
                
                    <li>上一篇: <a href="/2021/11/05/60190b5049e6/">Apex上传文件至Windows网盘</a></li>
                
                
                    <li>下一篇: <a href="/2021/11/05/e7f888284497/">Oracle AES加解密Demo</a></li>
                
            </ul>
        </section>
        
            <section class="post-tags">
            <a class="-none-link" href="/tags/Apex/" rel="tag">Apex</a><a class="-none-link" href="/tags/%E5%85%83%E5%AE%87%E5%AE%99/" rel="tag">元宇宙</a><a class="-none-link" href="/tags/%E9%92%89%E9%92%89/" rel="tag">钉钉</a>
            </section>
        
    
        <section class="post-author">
        
            <figure class="author-avatar">
                <!-- <img src="https://metaverse-1256174970.cos.ap-shanghai.myqcloud.com/image_%2Fahmed-mulla-hS-2bYjeyWc-unsplash.jpg" alt="Pan" /> -->
                <img src="https://nuczmjfhvndrjhrfpqkcyeimmdrcsebw.oss-cn-shanghai.aliyuncs.com/jbfffurvdqmpvhukbzbsea/QPWp3GjspHEz8QHi6RDm.jpeg" alt="Pan" >
            </figure>
        
            <div class="author-info">
                <h4>Pan</h4>
                <p>社会主义螺丝钉,币圈韭菜,A股韭菜</p>
            </div>
        </section>
    
    </div>
</main>

    <footer>
    <div class="buttons">
        <a class="to-top" href="#"></a>
    </div>
    <div class="wrap min">
        <section class="widget">
            <div class="row">
                <div class="col-m-4">
                    <h3 class="title-recent">最新文章：</h3>
                    <ul class="post-list"><li class="post-list-item"><a class="post-list-link" href="/2022/05/01/0586406b1d50/">不同衣物收纳教程</a></li><li class="post-list-item"><a class="post-list-link" href="/2022/01/13/6578eb87a21b/">Apex直传阿里云OSS</a></li><li class="post-list-item"><a class="post-list-link" href="/2021/12/13/3449662a057f/">Oracle Apex IR 多选批量处理后页面局部刷新</a></li><li class="post-list-item"><a class="post-list-link" href="/2021/11/05/60190b5049e6/">Apex上传文件至Windows网盘</a></li><li class="post-list-item"><a class="post-list-link" href="/2021/11/05/b209999e9b35/">Apex对接钉钉免登</a></li><li class="post-list-item"><a class="post-list-link" href="/2021/11/05/e7f888284497/">Oracle AES加解密Demo</a></li></ul>
                </div>
                <div class="col-m-4">
                    <h3 class="title-date">时光机：</h3>
                    <ul class="archive-list"><li class="archive-list-item"><a class="archive-list-link" href="/archives/2022/05/">五月 2022</a></li><li class="archive-list-item"><a class="archive-list-link" href="/archives/2022/01/">一月 2022</a></li><li class="archive-list-item"><a class="archive-list-link" href="/archives/2021/12/">十二月 2021</a></li><li class="archive-list-item"><a class="archive-list-link" href="/archives/2021/11/">十一月 2021</a></li><li class="archive-list-item"><a class="archive-list-link" href="/archives/2020/06/">六月 2020</a></li></ul>
                </div>
                <div class="col-m-4">
                    <h3 class="title-tags">标签云：</h3>
                    <a href="/tags/AES/" style="font-size: 10px;">AES</a> <a href="/tags/Apex/" style="font-size: 16.67px;">Apex</a> <a href="/tags/CSS/" style="font-size: 10px;">CSS</a> <a href="/tags/HTML/" style="font-size: 10px;">HTML</a> <a href="/tags/JS/" style="font-size: 10px;">JS</a> <a href="/tags/Nginx/" style="font-size: 10px;">Nginx</a> <a href="/tags/OSS/" style="font-size: 10px;">OSS</a> <a href="/tags/Oracle/" style="font-size: 13.33px;">Oracle</a> <a href="/tags/Ords/" style="font-size: 10px;">Ords</a> <a href="/tags/PL-SQL/" style="font-size: 10px;">PL/SQL</a> <a href="/tags/SQLcl/" style="font-size: 10px;">SQLcl</a> <a href="/tags/Tomcat/" style="font-size: 10px;">Tomcat</a> <a href="/tags/Windows/" style="font-size: 10px;">Windows</a> <a href="/tags/%E5%85%83%E5%AE%87%E5%AE%99/" style="font-size: 20px;">元宇宙</a> <a href="/tags/%E5%A4%9C%E8%AF%BB/" style="font-size: 13.33px;">夜读</a> <a href="/tags/%E6%9D%82%E9%A1%B9/" style="font-size: 10px;">杂项</a> <a href="/tags/%E7%BD%91%E7%9B%98/" style="font-size: 10px;">网盘</a> <a href="/tags/%E8%BD%AC%E8%BD%BD/" style="font-size: 13.33px;">转载</a> <a href="/tags/%E9%92%89%E9%92%89/" style="font-size: 10px;">钉钉</a> <a href="/tags/%E9%98%BF%E9%87%8C%E4%BA%91/" style="font-size: 10px;">阿里云</a>
                </div>
            </div>
        </section>
        <section class="sub-footer">
            <p>友链:<a href="https://wangfanggang.com/" target="_blank">钢钢更新</a></p>
            <p><span>用于分享个人成长经历,日常状况.心情感悟,分享Apex开发经验,Python开发经验,Go等一系列学习笔记.作为网络知识储备.也会记录一些网络金句</span></p>
            <p>© 2022 
                <a href="/">我的元宇宙</a>. All Rights Reserved. Theme By 
                <a href="https://github.com/Dreamer-Paul/Hingle" target="_blank" rel="nofollow">Hingle</a>.
                <a target="_blank" rel="noopener" href="https://beian.miit.gov.cn/">豫ICP备19030991号</a></p>
        </section>
    </div>
    
</footer>


<script src="/static/kico.js"></script>
<script src="/static/hingle.js"></script>


<script>var hingle = new Paul_Hingle({"copyright":true,"night":true});</script>

  </body>
</html>
